/*******************************************************************************
 * Package: com.hngtrust.iir.report.service
 * Type:    ReportPushService
 * Date:    2021/3/30 10:08
 *
 * Copyright (c) 2021 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
 *
 * You may not use this file except in compliance with the License.
 *******************************************************************************/
package com.hngtrust.iir.report.service;


import com.hngtrust.clickhouse.report.dto.SourceAgencyDTO;
import com.hngtrust.framework.page.PageParam;
import com.hngtrust.framework.page.PageResult;
import com.hngtrust.iir.dto.ReqDTO;
import com.hngtrust.iir.report.controller.dto.ListReportPushSchemeRespVO;
import com.hngtrust.iir.report.controller.dto.ListReportRespVO;
import com.hngtrust.iir.report.controller.dto.QuerySourceAgencyReqVO;

import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;

/**
 * 推送研报接口
 *
 * @author Keqiwei
 * @date 2021/3/30 10:08
 */
public interface ReportPushService {
   
    
    
    /**
     * 根据推送策略推送研报
     * @param listPushScheme
     * @param pageParam
     * @return
     */
    List<ListReportRespVO> getReportSchemeRespVOS(ListReportPushSchemeRespVO listPushScheme, PageParam pageParam);
    
    /**
     * 去重方法
     */
     <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor);
    
     PageResult<SourceAgencyDTO>  querySourceAgency(ReqDTO<QuerySourceAgencyReqVO> dto);
}
